module PProduct_gen (
    input [24:0]A,
    input zero,// 部分积为零
    input one, // 被乘数不变s
    input two, // 被乘数左移
    input neg1,// 被乘数取反+1
    input neg2,// 被乘数左移取反+1
    output [49:0]PProduct
    );
    reg [47:0]PProduct_reg;
 always @(*) begin
        if(zero)begin
            PProduct_reg = 50'd0;
        end
        else if(one)begin
            PProduct_reg = {{25{A[24]}}, A};
        end
        else if(two)begin
            PProduct_reg = {{24{A[24]}}, A, 1'b0};
        end
        else if(neg1)begin
            PProduct_reg = ~{{25{A[24]}}, A} + 1'b1;
        end
        else if(neg2)begin
            PProduct_reg = ~{{24{A[24]}}, A, 1'b0} + 1'b1;
        end
        else begin
            PProduct_reg = 50'd0;
        end
    end

    assign PProduct = PProduct_reg;
endmodule
